jQuery(document).ready(function() {
    
    jQuery.validator.addMethod("phone", function(phone_number, element) {
        phone_number = phone_number.replace(/\s+/g, "");
        return this.optional(element) || phone_number.match(/^[+\d\-\(\)]+$/);
    }, "Пожалуйста, укажите корректный номер");
    jQuery.validator.addMethod("domain", function(value, element) {
        value = $.trim(value.toLowerCase());
        return this.optional(element) || value.match(/^(?!.{54})[a-z0-9]+(\-[a-z0-9]+)*$/);
    }, "Пожалуйста, укажите корректный домен");
    jQuery.validator.addMethod("email", function(value, element) {
        value = $.trim(value.toLowerCase());
        return this.optional(element) || value.match(/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/);
    }, "Некорректный формат адреса электронной почты");

    jQuery.validator.setDefaults({
        errorClass: "validate",
        errorElement: "span"
    });

    $('form.register').validate(
    {
        errorPlacement: function(label, element) {
            if (element.attr('id') == 'domain') {
                label.insertAfter(element.parent());
            } else {
                label.insertAfter(element);
            }
        },
        rules: {
            'firstname': {
                required: true,
                maxlength: 255
            },
            'phone': {
                required: true,
                phone: true,
                minlength: 6
            },
            email: {
                required: true,
                email: true,
                remote: '/register?check_email=1'
            },
            'password': {
                required: true
            },
            domain: {
                required: true,
                domain:   true,
                remote: '/register?check_domain=1'
            }
        },
        messages: {
            firstname: {
                required: "Пожалуйста, укажите свое имя",
                maxlength: jQuery.validator.format("Имя не может быть длинее {0} символов!")
            },
            phone: {
                required: "Пожалуйста, укажите телефон",
                minlength:"Номер телефона слишком короткий"
            },
            email: {
                required: "Пожалуйста, укажите свой email",
                remote  : "Пользователь с таким логином уже зарегистрирован"
            },
            password: {
                required: "Пожалуйста, задайте пароль"
            },
            domain: {
                required: "Пожалуйста, выберите домен",
                remote:   "Этот домен уже занят"
            }
        }
    }); 
    
    $('form').not('.register').each(function () {
        $(this).validate({
            errorPlacement: function(error, element) {
                $(element).parent().append(error);
            },
            messages: {
                customer: "Введите имя клиента",
                email: {
                    required: "Введите Email",
                    email: "Email должен быть в формате name@domain.com"
                },
                subject: "Введите тему",
                reply: "Введите текст сообщения",
                name: "Введите имя",
                password: "Введите пароль",
                firstname: "Введите имя и фамиилю",
                domain: "Введите домен"
            }
        });
    });

  /* Active Links */
  var sections = $("section"),
  navigation_links = $("#navigation a");

  sections.waypoint( {
    handler: function(event, direction) {
      var active_section;

      active_section = $(this);
      if (direction === "up") active_section = active_section.prev();

      var active_link = $('#navigation a[href="#' + active_section.attr("id") + '"]');

      navigation_links.parent().removeClass("active");
      active_link.parent().addClass("active");
    },
    offset: '50%'
  });


  /* Right navigation collapses navbar in mobile view */
  $(function() {
    $('#navigation a').on('click', function(){
      if ($('.navbar-toggle').css('display') !='none'){
        $(".navbar-toggle").trigger( "click" );
      }
    });
  });

  /*
  $("body").click(function(event) {
    // only do this if navigation is visible, otherwise you see jump in navigation while collapse() is called 
     if ($(".navbar-collapse").is(":visible") && $(".navbar-toggle").is(":visible") ) {
      $('.navbar-collapse').collapse('toggle');
      e.stopPropgation();
      event.defaultPrevented();
    }
  });
  */


  /* Scroll to top */
  $('body').append('<div id="back-top"><span class="icon-arrow-up2"></span></div>');
  $("#back-top").hide();

  // fade in #back-top
  $(function () {
    $(window).scroll(function () {
      if ($(this).scrollTop() > 100) {
      $('#back-top').fadeIn();
      } else {
      $('#back-top').fadeOut();
      }
    });

    // scroll body to 0px on click
    $('#back-top').click(function () {
      $('body,html').animate({
      scrollTop: 0
      }, 800);
      return false;
    });
  });


  /* Remove navbar button 'pull-left' class on mobile */
  var width = $(window).width();
  if (width < 768) {
    $('.navbar-form').removeClass('pull-left');
    $('.navbar-form').css({'border' : '0'});
  }


  /* IE 10 in Windows 8 and Windows Phone 8 fix */
  if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
    var msViewportStyle = document.createElement('style')
    msViewportStyle.appendChild(
      document.createTextNode(
          '@-ms-viewport{width:auto!important}'
        )
    )
    document.querySelector('head').appendChild(msViewportStyle)
  }


  /* Android stock browser fix */
  var nua = navigator.userAgent
  var isAndroid = (nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 && nua.indexOf('AppleWebKit') > -1 && nua.indexOf('Chrome') === -1)
  if (isAndroid) {
    $('select.form-control').removeClass('form-control').css('width', '100%')
  }

});
